package com.manning.readinglist;

import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

/**
 * AmazonHealth 类并没有什么花哨的地方。health() 方法只是使用 Spring 的 RestTemplate 向 Amazon 首页发起了一个 GET 请求。如果请求成功，则返回一个表明 Amazon 状态为
 * UP 的 Health 对象。如果请求发生异常，则 health() 返回一个标明 Amazon 状态为 DOWN 的 Health 对象。
 */
@Component
public class AmazonHealth implements HealthIndicator {

    @Override
    public Health health() {
        try{
            RestTemplate rest = new RestTemplate();
            // 向 Amazon 发送请求
            rest.getForObject("http://www.amazon.com", String.class);
            return Health.up().build();
        } catch (Exception e) {
            // 报告 DOWN 状态
            return Health.down().build();
        }
    }

}
